(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

active(zeros) → mark(cons(0, zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0)
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0, IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Rewrite Strategy: FULL

(1) RenamingProof (EQUIVALENT transformation)

Renamed function symbols to avoid clashes with predefined symbol.

(2) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

S is empty.
Rewrite Strategy: FULL

(3) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(4) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

(5) OrderProof (LOWER BOUND(ID) transformation)

Heuristically decided to analyse the following defined symbols:
active, cons, U12, s, length, U22, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
cons < active
U12 < active
s < active
length < active
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
cons < proper
U12 < proper
s < proper
length < proper
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(6) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
cons, active, U12, s, length, U22, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
cons < active
U12 < active
s < active
length < active
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
cons < proper
U12 < proper
s < proper
length < proper
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(7) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

Induction Base:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b))

Induction Step:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n5_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) →RΩ(1)
mark(cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(8) Complex Obligation (BEST)

(9) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
U12, active, s, length, U22, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
U12 < active
s < active
length < active
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
U12 < proper
s < proper
length < proper
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(10) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)

Induction Base:
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b))

Induction Step:
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n1190_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) →RΩ(1)
mark(U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(11) Complex Obligation (BEST)

(12) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
s, active, length, U22, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
s < active
length < active
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
s < proper
length < proper
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(13) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)

Induction Base:
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)))

Induction Step:
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n2679_0, 1)))) →RΩ(1)
mark(s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0)))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(14) Complex Obligation (BEST)

(15) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
length, active, U22, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
length < active
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
length < proper
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(16) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)

Induction Base:
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)))

Induction Step:
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n3408_0, 1)))) →RΩ(1)
mark(length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0)))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(17) Complex Obligation (BEST)

(18) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
U22, active, U23, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
U22 < active
U23 < active
take < active
U11 < active
U21 < active
active < top
U22 < proper
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(19) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)

Induction Base:
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))

Induction Step:
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n4238_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) →RΩ(1)
mark(U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(20) Complex Obligation (BEST)

(21) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
U23, active, take, U11, U21, proper, top

They will be analysed ascendingly in the following order:
U23 < active
take < active
U11 < active
U21 < active
active < top
U23 < proper
take < proper
U11 < proper
U21 < proper
proper < top

(22) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)

Induction Base:
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))

Induction Step:
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n9407_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) →RΩ(1)
mark(U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(23) Complex Obligation (BEST)

(24) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
take, active, U11, U21, proper, top

They will be analysed ascendingly in the following order:
take < active
U11 < active
U21 < active
active < top
take < proper
U11 < proper
U21 < proper
proper < top

(25) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)

Induction Base:
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b))

Induction Step:
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n15580_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) →RΩ(1)
mark(take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(26) Complex Obligation (BEST)

(27) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
U11, active, U21, proper, top

They will be analysed ascendingly in the following order:
U11 < active
U21 < active
active < top
U11 < proper
U21 < proper
proper < top

(28) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)

Induction Base:
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b))

Induction Step:
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n18984_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b)) →RΩ(1)
mark(U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(29) Complex Obligation (BEST)

(30) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
U21, active, proper, top

They will be analysed ascendingly in the following order:
U21 < active
active < top
U21 < proper
proper < top

(31) RewriteLemmaProof (LOWER BOUND(ID) transformation)

Proved the following rewrite lemma:
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Induction Base:
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, 0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))

Induction Step:
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, +(n22493_0, 1))), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) →RΩ(1)
mark(U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d))) →IH
mark(*4_0)

We have rt ∈ Ω(n1) and sz ∈ O(n). Thus, we have ircR ∈ Ω(n).

(32) Complex Obligation (BEST)

(33) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
active, proper, top

They will be analysed ascendingly in the following order:
active < top
proper < top

(34) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol active.

(35) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
proper, top

They will be analysed ascendingly in the following order:
proper < top

(36) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol proper.

(37) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

The following defined symbols remain to be analysed:
top

(38) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol top.

(39) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(40) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(41) BOUNDS(n^1, INF)

(42) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)
U21(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n22493_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n224930)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(43) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(44) BOUNDS(n^1, INF)

(45) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)
U11(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n18984_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n189840)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(46) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(47) BOUNDS(n^1, INF)

(48) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)
take(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n15580_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n155800)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(49) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(50) BOUNDS(n^1, INF)

(51) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)
U23(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n9407_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n94070)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(52) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(53) BOUNDS(n^1, INF)

(54) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)
U22(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n4238_0)), gen_zeros:0':mark:tt:nil:ok3_0(b), gen_zeros:0':mark:tt:nil:ok3_0(c), gen_zeros:0':mark:tt:nil:ok3_0(d)) → *4_0, rt ∈ Ω(n42380)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(55) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(56) BOUNDS(n^1, INF)

(57) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)
length(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n3408_0))) → *4_0, rt ∈ Ω(n34080)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(58) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(59) BOUNDS(n^1, INF)

(60) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)
s(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n2679_0))) → *4_0, rt ∈ Ω(n26790)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(61) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(62) BOUNDS(n^1, INF)

(63) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)
U12(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n1190_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n11900)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(64) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(65) BOUNDS(n^1, INF)

(66) Obligation:

TRS:
Rules:
active(zeros) → mark(cons(0', zeros))
active(U11(tt, L)) → mark(U12(tt, L))
active(U12(tt, L)) → mark(s(length(L)))
active(U21(tt, IL, M, N)) → mark(U22(tt, IL, M, N))
active(U22(tt, IL, M, N)) → mark(U23(tt, IL, M, N))
active(U23(tt, IL, M, N)) → mark(cons(N, take(M, IL)))
active(length(nil)) → mark(0')
active(length(cons(N, L))) → mark(U11(tt, L))
active(take(0', IL)) → mark(nil)
active(take(s(M), cons(N, IL))) → mark(U21(tt, IL, M, N))
active(cons(X1, X2)) → cons(active(X1), X2)
active(U11(X1, X2)) → U11(active(X1), X2)
active(U12(X1, X2)) → U12(active(X1), X2)
active(s(X)) → s(active(X))
active(length(X)) → length(active(X))
active(U21(X1, X2, X3, X4)) → U21(active(X1), X2, X3, X4)
active(U22(X1, X2, X3, X4)) → U22(active(X1), X2, X3, X4)
active(U23(X1, X2, X3, X4)) → U23(active(X1), X2, X3, X4)
active(take(X1, X2)) → take(active(X1), X2)
active(take(X1, X2)) → take(X1, active(X2))
cons(mark(X1), X2) → mark(cons(X1, X2))
U11(mark(X1), X2) → mark(U11(X1, X2))
U12(mark(X1), X2) → mark(U12(X1, X2))
s(mark(X)) → mark(s(X))
length(mark(X)) → mark(length(X))
U21(mark(X1), X2, X3, X4) → mark(U21(X1, X2, X3, X4))
U22(mark(X1), X2, X3, X4) → mark(U22(X1, X2, X3, X4))
U23(mark(X1), X2, X3, X4) → mark(U23(X1, X2, X3, X4))
take(mark(X1), X2) → mark(take(X1, X2))
take(X1, mark(X2)) → mark(take(X1, X2))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0') → ok(0')
proper(U11(X1, X2)) → U11(proper(X1), proper(X2))
proper(tt) → ok(tt)
proper(U12(X1, X2)) → U12(proper(X1), proper(X2))
proper(s(X)) → s(proper(X))
proper(length(X)) → length(proper(X))
proper(U21(X1, X2, X3, X4)) → U21(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U22(X1, X2, X3, X4)) → U22(proper(X1), proper(X2), proper(X3), proper(X4))
proper(U23(X1, X2, X3, X4)) → U23(proper(X1), proper(X2), proper(X3), proper(X4))
proper(take(X1, X2)) → take(proper(X1), proper(X2))
proper(nil) → ok(nil)
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
U11(ok(X1), ok(X2)) → ok(U11(X1, X2))
U12(ok(X1), ok(X2)) → ok(U12(X1, X2))
s(ok(X)) → ok(s(X))
length(ok(X)) → ok(length(X))
U21(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U21(X1, X2, X3, X4))
U22(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U22(X1, X2, X3, X4))
U23(ok(X1), ok(X2), ok(X3), ok(X4)) → ok(U23(X1, X2, X3, X4))
take(ok(X1), ok(X2)) → ok(take(X1, X2))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Types:
active :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
zeros :: zeros:0':mark:tt:nil:ok
mark :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
cons :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
0' :: zeros:0':mark:tt:nil:ok
U11 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
tt :: zeros:0':mark:tt:nil:ok
U12 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
s :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
length :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U21 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U22 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
U23 :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
take :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
nil :: zeros:0':mark:tt:nil:ok
proper :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
ok :: zeros:0':mark:tt:nil:ok → zeros:0':mark:tt:nil:ok
top :: zeros:0':mark:tt:nil:ok → top
hole_zeros:0':mark:tt:nil:ok1_0 :: zeros:0':mark:tt:nil:ok
hole_top2_0 :: top
gen_zeros:0':mark:tt:nil:ok3_0 :: Nat → zeros:0':mark:tt:nil:ok

Lemmas:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

Generator Equations:
gen_zeros:0':mark:tt:nil:ok3_0(0) ⇔ zeros
gen_zeros:0':mark:tt:nil:ok3_0(+(x, 1)) ⇔ mark(gen_zeros:0':mark:tt:nil:ok3_0(x))

No more defined symbols left to analyse.

(67) LowerBoundsProof (EQUIVALENT transformation)

The lowerbound Ω(n1) was proven with the following lemma:
cons(gen_zeros:0':mark:tt:nil:ok3_0(+(1, n5_0)), gen_zeros:0':mark:tt:nil:ok3_0(b)) → *4_0, rt ∈ Ω(n50)

(68) BOUNDS(n^1, INF)